/*给服务器发送一个数据，告诉服务器要发送1024字节的数据，但是实际发送的数据不足1024字节，查看服务器处理结果*/
// 1.只发送一次请求，服务器得不到完整的请求，就不会去进行业务处理，客户端也就得不到响应，最后连接超时断开连接
// 2.连着给服务器发了很多次小的请求，服务器会把后面的请求当作前面请求的正文进行处理
//   而后边处理就可能因为这个出错(取出的一行不是请求行)，处理出错就会发送错误界面，此时一定要进行上下文状态的重置，不然后续的数据一直得不到处理
//   因为context->_status != RECV_HTTP_OVER，context->_resp_statu >= 400，就会一直循环调用onMessageCallback，一直发送错误界面，on_buffer一直扩容
//   A.进行上下文重置后，就是不断去取一行数据然后出错，再重置，直到数据不够一行就直接退出
//   B.在上述陈述中，有一个优化方案，就是重置之后，把缓冲区中的数据直接清空，也不去不断去取一行数据然后出错，再重置，直到数据不够一行就直接退出

#include "../source/Server_version3.hpp"

int main()
{
    std::string req = "GET /hello HTTP/1.1\r\nConnection: keep-alive\r\nContent-Length: 100\r\n\r\nmy name is zj hello world";
    muduo::Socket cli_socket;
    cli_socket.CreateClient(8500,"127.0.0.1");
    while(1)
    {
        assert(cli_socket.Send(req.c_str(), req.size()) != -1);
        assert(cli_socket.Send(req.c_str(), req.size()) != -1);
        assert(cli_socket.Send(req.c_str(), req.size()) != -1);
        assert(cli_socket.Send(req.c_str(), req.size()) != -1);
        assert(cli_socket.Send(req.c_str(), req.size()) != -1);
        assert(cli_socket.Send(req.c_str(), req.size()) != -1);
        assert(cli_socket.Send(req.c_str(), req.size()) != -1);

        char recv[1024];
        assert(cli_socket.Recv(recv,1023)!=-1);
        DBG_LOG("%s",recv);
        sleep(3);
    }
}